// Problem 030: Digit fifth powers
// Surprisingly there are only three numbers that can be written as the sum of fourth powers of their digits:
// 1634 = 1^4 + 6^4 + 3^4 + 4^4
// 8208 = 8^4 + 2^4 + 0^4 + 8^4
// 9474 = 9^4 + 4^4 + 7^4 + 4^4
// As 1 = 1^4 is not a sum it is not included.
// The sum of these numbers is 1634 + 8208 + 9474 = 19316.
// Find the sum of all the numbers that can be written as the sum of fifth powers of their digits.

package main

import (
	"fmt"
)

func p030() {
	sum := 0
	for x := 1000; x < 200000; x++ {
		if check030(x) {
			sum += x
		}
	}
	fmt.Println("Problem 030:", sum)
}

func check030(n int) bool {
	FP := [10]int{0, 1, 32, 243, 1024, 3125, 7776, 16807, 32768, 59049}
	sum := n
	for n > 0 {
		sum -= FP[n%10]
		n /= 10
	}
	return sum == 0
}
